前端那些事

vuePress-theme-reco chenpeng    2020 - 2021
前端那些事 前端那些事

Choose mode

  • dark
  • auto
  • light
首页
文章目录
  • Browser
  • CSS
  • ES6
  • JavaScript
  • Network
  • TypeScript
  • Vue
  • Vue3
  • Webpack
标签
时间轴
GitHub
author-avatar

chenpeng

85

Article

25

Tag

首页
文章目录
  • Browser
  • CSS
  • ES6
  • JavaScript
  • Network
  • TypeScript
  • Vue
  • Vue3
  • Webpack
标签
时间轴
GitHub
  • ES6-模块化

    • 模块加载方案比较
    • ES6 模块加载与 CommonJS 模块加载的原理

ES6 模块加载与 CommonJS 模块加载的原理

vuePress-theme-reco chenpeng    2020 - 2021

ES6 模块加载与 CommonJS 模块加载的原理

chenpeng 2020-11-30 ES6模块化

# 1.ES6 模块加载原理

ES6 模块是对导出的变量、方法是动态引用,遇到模块加载命令 import 时不会去执行模块,只是生成一个被加载模块的引用,需要开发者保证真正取值时能够取到值,只要引用存在,代码就能运行

# 2.CommonJS 模块加载原理

CommonJS 模块就是一个脚本文件,require 命令第一次加载该脚本时会执行整个脚本,然后在内存中生成该模块的一个说明对象

{
    id: '',  //模块名,唯一
    exports: {  //模块输出的各个接口
        ...
    },
    loaded: true,  //模块的脚本是否执行完毕
    ...
}
1
2
3
4
5
6
7
8

以后用到这个模块时,就会到对象的 exports 属性中取值。即使再次执行 require 命令,也不会再次执行该模块,而是到缓存中取值